package br.com.aquinoevasconcelos.control;
import java.util.List;

import br.com.aquinoevasconcelos.excecao.ValidacaoException;
import br.com.aquinoevasconcelos.modelos.Informativo;
import br.com.aquinoevasconcelos.repositorio.IRepositorioInformativo;
import br.com.aquinoevasconcelos.repositorio.RepositorioInformativo;
import br.com.aquinoevasconcelos.util.Validacao;

/**
 * @author Paulo Roberto
 * @email paulolima2008@hotmail.com
 * @version 1.0 @ Propriedade da Techcode
 */

public class ControladorInformativo {

	private IRepositorioInformativo informativo;
	private Informativo info = new Informativo();


	// construtor da classe
	public ControladorInformativo(IRepositorioInformativo informativo) {
		this.informativo = informativo;
	}

	// -------------------------------------------------------------------------------------------------
	public void inserirInformativo(Informativo info) throws ValidacaoException {

		// Setar a hora no atributo
		info.setDataHora(new Validacao().eventoDataHora());

		// Validacao de titulo
		// ---------------------------------------------------------------------------------------------
		if (new Validacao().campoVazio(info.getTitulo()) == true
				|| new Validacao().verificarQuantidadeCaracter(
						info.getTitulo(), 100) == true) {
			throw new ValidacaoException();
		}
		// Validacao de descricao
		// ---------------------------------------------------------------------------------------------
		if (new Validacao().campoVazio(info.getDescricao()) == true
				|| new Validacao().verificarQuantidadeCaracter(
						info.getDescricao(), 1000000) == true) {
			throw new ValidacaoException();
		}
		// validacao de dataHora
		// ---------------------------------------------------------------------------------------------
		if (new Validacao().campoVazio(info.getDataHora()) == true
				|| new Validacao().verificarQuantidadeCaracter(
						info.getDataHora(), 16)) {
			throw new ValidacaoException();
		}
		// ---------------------------------------------------------------------------------------------
		else {
			informativo.inserirInformativo(info);
		}
		// ---------------------------------------------------------------------------------------------
	}

	// -------------------------------------------------------------------
	public void atualizarInformativo(Informativo info)
			throws ValidacaoException {

		
			informativo.atualizarInformativo(info);
			
		}

	// -------------------------------------------------------------------------------------------------
	public void removerInformativo(Informativo info) {
		informativo.removerInformativo(info);
	}

	// -----------------------------------------------------------------------------------------------
	public List<Informativo> listaInformativo() {
		return informativo.listaInformativo();
	}

	// ------------------------------------------------------------------------------------------------
	public List<Informativo> pesquisaInformativo(String query) {
		return informativo.pesquisaInformativo(query);
	}
	// -----------------------------------------------------------------------------------------------
	public Informativo EditarInformativo(long id){
		
		informativo = new RepositorioInformativo();
		info = null;
		
		
		info =  informativo.pesquisaInformativo("FROM informativo WHERE id = '"+id+"'").get(0);
		
		return info;
	}
	//------------------------------------------------------------------------------------------------
	public long QuantidadeInformativo(){
		
		informativo = new RepositorioInformativo();
		
		long qtd = informativo.quantidaDeObjetos(info);
		
		//long qtd = informativo.pesquisaInformativo("").get(0);

		return qtd;
		
		
	}
	//------------------------------------------------------------------------------------------------
}
